package com.algorithm.stack;/*
 *@Author:DOWN
 *@Date:2021/12/27 16:51
 *@Comment:
 */

import java.awt.*;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;

public class QueueRealizeStack {
    private Queue<Integer>queue1;
    public QueueRealizeStack() {
        queue1=new LinkedList<>();
    }

    /**
     * 将元素 x 压入栈顶。
     * @param x 元素
     */
    public void push(int x) {
        queue1.add(x);
    }

    /**
     *  移除并返回栈顶元素。
     * @return int
     */
    public int pop() {
        Queue<Integer>queue2=new LinkedList<>();
        while (queue1.size()>1){
            queue2.add(queue1.remove());
        }
        int old=queue1.remove();
        queue1=queue2;
        return old;
    }

    /**
     * 返回栈顶元素。
     * @return int
     */
    public int top() {
        Queue<Integer>queue2=new LinkedList<>();
        while (queue1.size()>1){
            queue2.add(queue1.remove());
        }
        int tail=queue1.remove();
        queue2.add(tail);
        queue1=queue2;
        return tail;
    }

    /**
     * 如果栈是空的，返回 true ；否则，返回 false 。
     * @return boolean
     */
    public boolean empty() {
        return queue1.isEmpty();
    }
}
